package es.uned.ii.si3.dao;

import java.sql.PreparedStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import es.uned.ii.si3.model.TipoPfc;

public class TipoPfcDAOImpl implements TipoPfcDAO {

	private static Logger log = Logger.getLogger(TipoPfcDAOImpl.class);

	public TipoPfcDAOImpl() {
		
	}
	
	
	public TipoPfc loadByPrimaryKey(TipoPfc tipoPfc) {
		return tipoPfc == null ? null : this.getTipoPFCById(tipoPfc.getIdTipoPfc());
	}
	
	
	public TipoPfc getTipoPFCById(int id) {
		
		Connection conn = ConnectionFactory.getConnection();
		TipoPfc tipoPFC = null;
		PreparedStatement pstmt = null;
		ResultSet resultado = null;
		
		try {
			pstmt = conn.prepareStatement("	select * from tipo_pfc where idTipoPFC = ?");
			pstmt.setInt(1, id);
			
			resultado = pstmt.executeQuery();
			
			if (resultado.next()){
				tipoPFC = new TipoPfc ();
				tipoPFC.setIdTipoPfc(id);
				tipoPFC.setDescripcion(resultado.getString("descripcion"));
			}			
		} catch (SQLException e) {
			tipoPFC = null;
		} finally {
			try {
				resultado.close();
				resultado = null;
			} catch (Exception e) { }
			
			try {
				pstmt.close();
				pstmt = null; 
			} catch (Exception e) { }
		}
		
		ConnectionFactory.release(conn);
		return tipoPFC;
	}


	public List<TipoPfc> getAll() {
		
		Connection conn = ConnectionFactory.getConnection();
		PreparedStatement pstmt = null;
		ResultSet resultado = null;
		List<TipoPfc> listaPfc = new ArrayList<TipoPfc>();
		try {
			pstmt = conn.prepareStatement("	SELECT * FROM tipo_pfc");
			resultado = pstmt.executeQuery();
			
			while (resultado.next()){
				TipoPfc tipoPfc = new TipoPfc();
				tipoPfc.setIdTipoPfc(resultado.getInt("idTipoPFC"));
				tipoPfc.setDescripcion(resultado.getString("descripcion"));
				listaPfc.add(tipoPfc);
			}			
		} catch (SQLException e) {
			listaPfc = null;
		} finally {
			try {
				resultado.close();
				resultado = null;
			} catch (Exception e) { }
			
			try {
				pstmt.close();
				pstmt = null; 
			} catch (Exception e) { }
		}
		
		ConnectionFactory.release(conn);
		return listaPfc;
	}

}
